From e044676584a133007cff4660470f2f7272198f5d Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Wed, 12 Sep 2012 17:29:58 -0400 Subject: [PATCH] Destroy the legacy style with the screen https://bugzilla.gnome.org/show_bug.cgi?id=683896 --- gtk/deprecated/gtkstyle.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/gtk/deprecated/gtkstyle.c b/gtk/deprecated/gtkstyle.c index c981aaa8dd..12a8826412 100644 --- a/gtk/deprecated/gtkstyle.c +++ b/gtk/deprecated/gtkstyle.c @@ -4015,7 +4015,23 @@ gtk_paint_spinner (GtkStyle *style, cairo_restore (cr); } -static GtkStyle *gtk_default_style = NULL; +static GtkStyle * +gtk_widget_get_default_style_for_screen (GdkScreen *screen) +{ + GtkStyle *default_style; + + default_style = g_object_get_data (G_OBJECT (screen), "gtk-legacy-default-style"); + if (default_style == NULL) + { + default_style = gtk_style_new (); + g_object_set_data_full (G_OBJECT (screen), + I_("gtk-legacy-default-style"), + default_style, + g_object_unref); + } + + return default_style; +} /** * gtk_widget_get_default_style: @@ -4032,13 +4048,12 @@ static GtkStyle *gtk_default_style = NULL; GtkStyle* gtk_widget_get_default_style (void) { - if (!gtk_default_style) - { - gtk_default_style = gtk_style_new (); - g_object_ref (gtk_default_style); - } + GdkScreen *screen = gdk_screen_get_default (); - return gtk_default_style; + if (screen) + return gtk_widget_get_default_style_for_screen (screen); + else + return NULL; } /** -- 2.30.2